package com.linkstec.reflect;

import java.lang.reflect.Method;

public class Ceshi {
  public static void main(String[] args) {

     try {
        String className = "com.linkstec.reflect.Use";//这里注意了，是：包名.类名，只写类名会出问题的哦
        Class<?> testClass = Class.forName(className);
        Use use = (Use) testClass.newInstance();
        Method saddMethod2 = testClass.getMethod("demo", new Class[]{String.class});
        Method saddMethod3 = testClass.getMethod("demo2", new Class[]{String.class});
        Method saddMethod33 = testClass.getMethod("demo3", new Class<?>[0]);

//          String result=saddMethod2.invoke(null,new Object[]{"测试反射"}).toString();
          String result=saddMethod2.invoke(null,"测试反射1").toString();
          String result3=saddMethod3.invoke(null,"测试反射2").toString();
          saddMethod33.invoke(use,new Object[0]);
          //虽然invoke(),方法里的参数是变参，单是，第一个的null还是需要的，原因大家可以看下源码
          System.out.println(result);
          System.out.println(result3);
      } catch (Exception e) {
        e.printStackTrace();
      }
  }
}